﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;

namespace GIFT
{
    class ConsultaFormulario
    {
        private ConsultaForm miConsulta;

        public ConsultaFormulario() 
        {
            miConsulta = new ConsultaForm();
        }

        //Manda a hacer la consulta de listar los formularios existentes en la base de datos
        public ArrayList obtieneFormularios() 
        {
            ArrayList losFormularios =  new ArrayList();
            String sentenciaSql = "Select nombre From [GIFT].[dbo].[formulario]";
            SqlDataReader datos = miConsulta.HacerConsulta1(sentenciaSql);
            if (datos != null)
            {
                while (datos.Read())
                {
                    losFormularios.Add(datos.GetValue(0).ToString());
                }
            }
            miConsulta.CierraConexion();
            return losFormularios;
        }

        //Manda a eliminar el formulario deseado en la base de datos
        public void eliminaFormulario(string cualFormulario) 
        {
            String sentenciaSql = "DELETE FROM [GIFT].[dbo].[formulario] WHERE nombre = '" + cualFormulario + "'";
            SqlDataReader datos = miConsulta.HacerConsulta1(sentenciaSql);//la ejecuta
            miConsulta.CierraConexion();
        }

        public bool verificaExistenciaFormulario(String cualFormulario) 
        {
            bool existe = false;
            String sentenciaSql = "Select * FROM [GIFT].[dbo].[formulario] WHERE nombre = '" + cualFormulario + "'";
            SqlDataReader datos = miConsulta.HacerConsulta1(sentenciaSql);//la ejecuta
            if (datos.HasRows) { existe = true; }
            miConsulta.CierraConexion();
            return existe;
        }

        //Devuelve los atributos de un formulario especifico
        public ArrayList obtieneAtributosFormulario(String cualFormulario)
        {
            ArrayList atributosFormulario = new ArrayList();
            String sentenciaSql = "Select numero, nombre, descripcion, fecha_actualizacion, tamanoX, tamanoY,icono From [GIFT].[dbo].[formulario] WHERE nombre = '" + cualFormulario + "'";
            SqlDataReader datos = miConsulta.HacerConsulta1(sentenciaSql);
            if (datos != null)
            {
                if (datos.Read())
                {
                    atributosFormulario.Add(datos.GetValue(0).ToString());
                    atributosFormulario.Add(datos.GetValue(1).ToString());
                    atributosFormulario.Add(datos.GetValue(2).ToString());
                    atributosFormulario.Add(datos.GetValue(3).ToString());
                    atributosFormulario.Add(datos.GetValue(4).ToString());
                    atributosFormulario.Add(datos.GetValue(5).ToString());
                    atributosFormulario.Add(datos.GetValue(6).ToString());
                }
            }
            miConsulta.CierraConexion();
            return atributosFormulario;
        }

        public ArrayList obtieneTiposCampo(String cualTipoCampo)
        {
            ArrayList tiposCampo = new ArrayList();
            String sentenciaSql = "Select nombre From [GIFT].[dbo].[" + cualTipoCampo + "]";
            SqlDataReader datos = miConsulta.HacerConsulta1(sentenciaSql);
            if (datos != null)
            {
                while (datos.Read())
                {
                    tiposCampo.Add(datos.GetValue(0).ToString());
                }
            }
            miConsulta.CierraConexion();
            return tiposCampo;
        }

        //Manda a hacer la consulta para obetener el icono de un formulario y devuelve el objeto
        public object obtieneIcono(String cualFormulario) 
        {
            String sentenciaSql = "SELECT icono FROM [GIFT].[dbo].[formulario] WHERE nombre = '" + cualFormulario + "'";
            SqlCommand cmd = new SqlCommand(sentenciaSql, miConsulta.getConexion());
            cmd.CommandType = CommandType.Text;
            object icono = miConsulta.HacerConsulta3(cmd);
            return icono;
        }

        //Manda a buscar los elementos de componente_formulario
        public String atributo_componente_formulario(String nombre, String atributo, String nombre_formulario)
        {
            String respuesta = "";
            if (this.verificaExistenciaFormulario(nombre_formulario))
            {
                ArrayList atributosFormulario = this.obtieneAtributosFormulario(nombre_formulario);
                String id_componente = atributosFormulario[0].ToString();
                String sentenciaSql = "Select " + atributo + " From [GIFT].[dbo].[componente_formulario] WHERE [numero formulario] = " + id_componente + " AND nombre = '" + nombre + "'";
                SqlDataReader datos = miConsulta.HacerConsulta1(sentenciaSql);
                if (datos != null)
                {
                    if (datos.Read())
                    {
                        respuesta = datos.GetValue(0).ToString();
                    }
                }

            }
            miConsulta.CierraConexion();
            return respuesta;
        }
        public void clonarComponentes(String nuevoFormu, String formularioFuente)
        {   /*busca el nuevo numero del formulario*/
            ConsultaForm miConsulta2 = new ConsultaForm();
            SqlDataReader datos2;
            String numeroNuevoFormu = "";
            String numeroFuenteFormu = "";
            String sentenciaSql = "Select numero From [GIFT].[dbo].[formulario] WHERE [nombre] = '" + nuevoFormu + "'";
            SqlDataReader datos = miConsulta.HacerConsulta1(sentenciaSql);
            if (datos != null)
            {
                if (datos.Read())
                {
                    numeroNuevoFormu = datos.GetValue(0).ToString();
                }
            }
            miConsulta.CierraConexion();
            /*busca nuemero formulario del fuente*/
            sentenciaSql = "Select numero From [GIFT].[dbo].[formulario] WHERE [nombre] = '" + formularioFuente + "'";
            datos = miConsulta.HacerConsulta1(sentenciaSql);
            if (datos != null)
            {
                if (datos.Read())
                {
                    numeroFuenteFormu = datos.GetValue(0).ToString();
                }
            }
            miConsulta.CierraConexion();
            String cero = "";
            /*obtiene los componentes*/
            sentenciaSql = "Select * From [GIFT].[dbo].[componente_formulario] WHERE [numero formulario] = " + numeroFuenteFormu ;
            datos = miConsulta.HacerConsulta1(sentenciaSql);
            if (datos != null)
            {
                while (datos.Read())
                {
                    //si es un rotulo
                    if (datos.GetValue(12).ToString() == cero)
                        sentenciaSql = "INSERT INTO [GIFT].[dbo].[componente_formulario]([nombre],[descripcion],[fecha_actualizacion],[tamanoX],[tamanoY],[posicionX],[posicionY],[nombre fuente],[tamano fuente],[estilo fuente],[color],[numero formulario]) VALUES ('" + datos.GetValue(1).ToString() + "','" + datos.GetValue(2).ToString() + "' ,(GetDate()), " + datos.GetValue(4).ToString() + "," + datos.GetValue(5).ToString() + "," + datos.GetValue(6).ToString() + "," + datos.GetValue(7).ToString() + ",'" + datos.GetValue(9).ToString() + "'," + datos.GetValue(10).ToString() + " ,'" + datos.GetValue(11).ToString() + "','" + datos.GetValue(8).ToString() + "','" + numeroNuevoFormu + "')";
                    //no es un rotulo
                    else sentenciaSql = "INSERT INTO [GIFT].[dbo].[componente_formulario]([nombre],[descripcion],[fecha_actualizacion],[tamanoX],[tamanoY],[posicionX],[posicionY],[nombre fuente],[tamano fuente],[estilo fuente],[color],[id tipo campo],[numero formulario],[indice tabulacion]) VALUES ('" + datos.GetValue(1).ToString() + "','" + datos.GetValue(2).ToString() + "' ,(GetDate()), " + datos.GetValue(4).ToString() + "," + datos.GetValue(5).ToString() + "," + datos.GetValue(6).ToString() + "," + datos.GetValue(7).ToString() + ",'" + datos.GetValue(9).ToString() + "'," + datos.GetValue(10).ToString() + " ,'" + datos.GetValue(11).ToString() + "','" + datos.GetValue(8).ToString() + "','" + datos.GetValue(12).ToString() + "','" + numeroNuevoFormu + "','" + datos.GetValue(14).ToString() + "')";
                    datos2 = miConsulta2.HacerConsulta1(sentenciaSql);
                    miConsulta2.CierraConexion();
                }
            }
            miConsulta.CierraConexion();
        }
        //Manda a buscar los elementos de componente_formulario
        public void editar_componente_formulario(String nombre_actual, String nombre_nuevo, String descripcion, String nombre_formulario)
        {
            if (this.verificaExistenciaFormulario(nombre_formulario))
            {
                ArrayList atributosFormulario = this.obtieneAtributosFormulario(nombre_formulario);
                String id_componente = atributosFormulario[0].ToString();
                if ((nombre_actual != nombre_nuevo && !existe_componente_formulario(nombre_nuevo, id_componente)) || nombre_actual == nombre_nuevo)
                {
                    String sentenciaSql = "UPDATE [GIFT].[dbo].[componente_formulario] SET [nombre] = '" + nombre_nuevo + "' , [descripcion] = '" + descripcion + "' WHERE [numero formulario] = " + id_componente + " AND nombre = '" + nombre_actual + "'";
                    SqlDataReader datos = miConsulta.HacerConsulta1(sentenciaSql);
                    miConsulta.CierraConexion();
                }

            }
        }

        //Manda a buscar los elementos de componente_formulario
        public bool existe_componente_formulario(String nombre, String id_formulario)
        {
            bool existe = false;
            String sentenciaSql = "Select * FROM [GIFT].[dbo].[componente_formulario] WHERE [numero formulario] = " + id_formulario + " AND nombre = '" + nombre + "'";
            SqlDataReader datos = miConsulta.HacerConsulta1(sentenciaSql);//la ejecuta
            if (datos.HasRows) { existe = true; }
            miConsulta.CierraConexion();
            return existe;
        }

        //Manda a insertar un nuevo formulario en la base de datos
        public void guardaFormulario(String nombre, String descripcion, String X, String Y)
        {
            String sentenciaSql;
            SqlDataReader datos;
            if (descripcion == "")
            {
                sentenciaSql = "INSERT INTO [GIFT].[dbo].[formulario]([nombre],[fecha_actualizacion],[tamanoX],[tamanoY]) VALUES ('" + nombre + "', GetDate(), " + X + "," + Y + ")";
                datos = miConsulta.HacerConsulta1(sentenciaSql);
                miConsulta.CierraConexion();
            }
            else
            {
                sentenciaSql = "INSERT INTO [GIFT].[dbo].[formulario]([nombre],[descripcion],[fecha_actualizacion],[tamanoX],[tamanoY]) VALUES ('" + nombre + "','" + descripcion + "', GetDate(), " + X + "," + Y + ")";
                datos = miConsulta.HacerConsulta1(sentenciaSql);
                miConsulta.CierraConexion();
            }
        }

        //Manda a insertar el icono de un formulario especifico
        public void guardaIcono(byte[] photo, String cualFormulario) 
        {
            String sentenciaSql = "Update [GIFT].[dbo].[formulario] set icono = @icono Where nombre = '" + cualFormulario + "'";
            SqlCommand  comando = new SqlCommand(sentenciaSql, miConsulta.getConexion());
            comando.Parameters.Add("@icono", SqlDbType.Image, photo.Length).Value = photo;
            miConsulta.HacerConsulta2(comando);
        }

        //Manda a actualizar un formulario
        public void actualizaFormulario(String cualFormulario, String descripcion, String X, String Y) 
        {
            String desc;
            if (descripcion == "") { desc = "NULL"; }
            else { desc = "'" + descripcion + "'"; }

            String sentenciaSql = "Update [GIFT].[dbo].[formulario] set [descripcion] = " + desc + ", [tamanoX] = " + X + ", [tamanoY] = " + Y + " Where nombre = '" + cualFormulario + "'";
            SqlDataReader datos = miConsulta.HacerConsulta1(sentenciaSql);
            miConsulta.CierraConexion();
        }

        //Manda a eliminar un icono de un formulario
        public void eliminaIcono(String cualFormulario) 
        {
            String sentenciaSql = "Update [GIFT].[dbo].[formulario] set [icono] = NULL Where nombre = '" + cualFormulario + "'";
            SqlDataReader datos = miConsulta.HacerConsulta1(sentenciaSql);
            miConsulta.CierraConexion();
        }

        //Devuelve el atributo que se pide de un formulario especifico
        public String obtieneAtributoFormulario(String cualFormulario, String atributo)
        {
            String resultado= "NULL";
            String sentenciaSql = "Select "+ atributo +" From [GIFT].[dbo].[formulario] WHERE nombre = '" + cualFormulario + "'";
            SqlDataReader datos = miConsulta.HacerConsulta1(sentenciaSql);
            if (datos != null)
            {
                if (datos.Read())
                {
                    resultado = datos.GetValue(0).ToString();
                }
            }
            miConsulta.CierraConexion();
            return resultado;
        }

        //Agrega un rotulo en la base de datos
        public void agregaRotulo(String numFormulario, String nombreRotulo, String descripcionRotulo, String tamanoX, String tamanoY, String posicionX, String posicionY, String nombreFuente, String tamanoFuente, String estiloFuente, String color)
        {
            String sentenciaSql;
            SqlDataReader datos;
            sentenciaSql = "INSERT INTO [GIFT].[dbo].[componente_formulario]([nombre],[descripcion],[fecha_actualizacion],[tamanoX],[tamanoY],[posicionX],[posicionY],[nombre fuente],[tamano fuente],[estilo fuente],[color],[numero formulario]) VALUES ('" + nombreRotulo + "','" + descripcionRotulo + "' ,(GetDate()), " + tamanoX + "," + tamanoY + "," + posicionX + "," + posicionY + ",'" + nombreFuente + "',"+ tamanoFuente +" ,'"+ estiloFuente +"','" + color + "'," + numFormulario + ")";
            datos = miConsulta.HacerConsulta1(sentenciaSql);
            miConsulta.CierraConexion();
        }
        public void agregaTipoCampo(String numFormulario, String nombreCampo, String descripcionCampo, String tamanoX, String tamanoY, String posicionX, String posicionY, String nombreFuente, String tamanoFuente, String estiloFuente, String color, String tipoCampo, String nombreTipoCampo, String indice_de_tabulacion)
        {
            String sentenciaSql, correlativoTipoCampo = "", idTipoCampoComponente = "";
            SqlDataReader datos;
            //Busca el correlativo del texto
            sentenciaSql = "SELECT [correlativo] FROM [GIFT].[dbo].[" + tipoCampo + "] WHERE [nombre] = '" + nombreTipoCampo + "'";
            datos = miConsulta.HacerConsulta1(sentenciaSql);
            if (datos != null)
            {
                if (datos.Read())
                {
                    correlativoTipoCampo = datos.GetValue(0).ToString();
                }
            }
            miConsulta.CierraConexion();

            //Crea el enlace al tipo campo de componente
            sentenciaSql = "INSERT INTO [GIFT].[dbo].[Tipo Campo Componente]([id " + tipoCampo + "] ,[tipo campo])VALUES (" + correlativoTipoCampo + " ,'" + tipoCampo + "')";
            datos = miConsulta.HacerConsulta1(sentenciaSql);
            if (datos != null)
            {
                if (datos.Read())
                {
                    idTipoCampoComponente = datos.GetValue(0).ToString();
                }
            }
            miConsulta.CierraConexion();

            //Inserta el tipo de campo
            sentenciaSql = "INSERT INTO [GIFT].[dbo].[componente_formulario]([nombre],[descripcion],[fecha_actualizacion],[tamanoX],[tamanoY],[posicionX],[posicionY],[nombre fuente],[tamano fuente],[estilo fuente],[color],[numero formulario],[id tipo campo],[indice tabulacion]) VALUES ('" + nombreCampo + "','" + descripcionCampo + "' ,(GetDate()), " + tamanoX + "," + tamanoY + "," + posicionX + "," + posicionY + ",'" + nombreFuente + "'," + tamanoFuente + " ,'" + estiloFuente + "','" + color + "'," + numFormulario + "," + idTipoCampoComponente + "," + indice_de_tabulacion + ")";
            datos = miConsulta.HacerConsulta1(sentenciaSql);
            miConsulta.CierraConexion();
        }
        //Agrega un rotulo en la base de datos
        public void agregaTipoCampo(String numFormulario, String nombreCampo, String descripcionCampo, String tamanoX, String tamanoY, String posicionX, String posicionY, String nombreFuente, String tamanoFuente, String estiloFuente, String color, String tipoCampo, String nombreTipoCampo)
        {
            String sentenciaSql, correlativoTipoCampo = "", idTipoCampoComponente = "";
            SqlDataReader datos;
            //Busca el correlativo del texto
            sentenciaSql = "SELECT [correlativo] FROM [GIFT].[dbo].[" + tipoCampo + "] WHERE [nombre] = '" + nombreTipoCampo + "'";
            datos = miConsulta.HacerConsulta1(sentenciaSql);
            if (datos != null)
            {
                if (datos.Read())
                {
                    correlativoTipoCampo = datos.GetValue(0).ToString();
                }
            }
            miConsulta.CierraConexion();

            //Crea el enlace al tipo campo de componente
            sentenciaSql = "INSERT INTO [GIFT].[dbo].[Tipo Campo Componente]([id " + tipoCampo + "] ,[tipo campo])VALUES (" + correlativoTipoCampo + " ,'" + tipoCampo + "')";
            datos = miConsulta.HacerConsulta1(sentenciaSql);
            if (datos != null)
            {
                if (datos.Read())
                {
                    idTipoCampoComponente = datos.GetValue(0).ToString();
                }
            }
            miConsulta.CierraConexion();

            //Inserta el tipo de campo
            sentenciaSql = "INSERT INTO [GIFT].[dbo].[componente_formulario]([nombre],[descripcion],[fecha_actualizacion],[tamanoX],[tamanoY],[posicionX],[posicionY],[nombre fuente],[tamano fuente],[estilo fuente],[color],[numero formulario],[id tipo campo]) VALUES ('" + nombreCampo + "','" + descripcionCampo + "' ,(GetDate()), " + tamanoX + "," + tamanoY + "," + posicionX + "," + posicionY + ",'" + nombreFuente + "',"+ tamanoFuente +" ,'"+ estiloFuente + "','" + color + "'," + numFormulario + "," + idTipoCampoComponente + ")";
            datos = miConsulta.HacerConsulta1(sentenciaSql);
            miConsulta.CierraConexion();
        }

        //Elimina un componente del formulario
        public void eliminaComponente(String componente, String cualFormulario)
        {
            String numero = "";
            String sentenciaSql = "Select numero From [GIFT].[dbo].[formulario] WHERE nombre = '" + cualFormulario + "'";
            SqlDataReader datos = miConsulta.HacerConsulta1(sentenciaSql);
            if (datos != null)
            {
                if (datos.Read())
                {
                    numero = datos.GetValue(0).ToString();
                }
            }
            miConsulta.CierraConexion();

            String sentenciaSql1 = "DELETE FROM [GIFT].[dbo].[componente_formulario] WHERE nombre = '" + componente + "' AND [numero formulario] = " + numero;
            SqlDataReader datos1 = miConsulta.HacerConsulta1(sentenciaSql1);//la ejecuta
            miConsulta.CierraConexion();
        }


        //metodo provisional para obtener el largo de un tipo texto
        //mientras se pegan con las clases de tipo campo para usar los gets de Texto
        public int getLargoTipoCampoTexto(String nombreTipoTexto)
        {
            int largo = 0;
            String sentenciaSql = "Select largo From [GIFT].[dbo].[texto] Where nombre = '" + nombreTipoTexto + "'";
            SqlDataReader datos = miConsulta.HacerConsulta1(sentenciaSql);
            if (datos.HasRows)
            {
                while (datos.Read()) //ouede ir dentro del if, solo es true la primera vez
                {
                    largo = (int)datos.GetValue(0);
                }
            }
            miConsulta.CierraConexion();
            return largo;
        }

        //Retorna true si el nombre de componente que lleag como parametro ya existe en la base de datos
        public bool existeComponente(String nombreComponente,String numeroFormulario)
        {
            bool existe = false;
            String sentenciaSql = "SELECT [id] FROM [GIFT].[dbo].[componente_formulario] WHERE [nombre] = '"+ nombreComponente +"' AND [numero formulario] = '"+ numeroFormulario +"'";
            SqlDataReader datos = miConsulta.HacerConsulta1(sentenciaSql);//la ejecuta
            if (datos.HasRows) { existe = true; }
            miConsulta.CierraConexion();
            return existe;
        }

       
        public ArrayList cargaComponentes(String cualFormulario)
        {
            String numero = "";
            String sentenciaSql = "Select numero From [GIFT].[dbo].[formulario] WHERE nombre = '" + cualFormulario + "'";
            SqlDataReader datos = miConsulta.HacerConsulta1(sentenciaSql);
            if (datos != null)
            {
                if (datos.Read())
                {
                    numero = datos.GetValue(0).ToString();
                }
            }
            miConsulta.CierraConexion();
            
            ArrayList componentes = new ArrayList();
            String sentenciaSql1 = "Select nombre FROM [GIFT].[dbo].[componente_formulario] WHERE [numero formulario] = " + numero;
            SqlDataReader datos1 = miConsulta.HacerConsulta1(sentenciaSql1);//la ejecuta
            if (datos1 != null) 
            {
                while (datos1.Read()) 
                {
                    componentes.Add(datos1.GetValue(0).ToString());
                }
            }
            miConsulta.CierraConexion();
            return componentes;
        }

        
        public ArrayList obtieneComponentes(String cualFormulario)
        {
            String numero = "";
            String sentenciaSql = "Select numero From [GIFT].[dbo].[formulario] WHERE nombre = '" + cualFormulario + "'";
            SqlDataReader datos = miConsulta.HacerConsulta1(sentenciaSql);
            if (datos != null)
            {
                if (datos.Read())
                {
                    numero = datos.GetValue(0).ToString();
                }
            }
            miConsulta.CierraConexion();

            ArrayList componentes = new ArrayList();
            ArrayList atributos;
            String sentenciaSql1 = "Select  C.nombre, C.tamanoX, C.tamanoY, C.posicionX,  C.posicionY, C.[nombre fuente], C.[tamano fuente], C.[estilo fuente], C.Color, T.[tipo campo] FROM [GIFT].[dbo].[Tipo Campo Componente] T  FULL JOIN [GIFT].[dbo].[componente_formulario] C  ON T.[id] = C.[id tipo campo] WHERE C.[numero formulario] = " + numero;
            SqlDataReader datos1 = miConsulta.HacerConsulta1(sentenciaSql1);
            if (datos1 != null)
            {
                while (datos1.Read())
                {
                    atributos = new ArrayList();
                    for (int i = 0; i < 10; ++i)
                    {
                        atributos.Add(datos1.GetValue(i).ToString());
                    }
                    componentes.Add(atributos);
                }
            }
            miConsulta.CierraConexion();
            return componentes;
        }

        //Actualiza un atributo de un componentes
        public void actualizaAtributoComponente(String numeroFormulario, String nombreComponente, String atributo, String valor)
        {
            String sentenciaSql = "UPDATE [GIFT].[dbo].[componente_formulario] SET ["+ atributo +"] = "+ valor +" WHERE [nombre] = '"+ nombreComponente +"' and [numero formulario] = "+ numeroFormulario;
            SqlDataReader datos = miConsulta.HacerConsulta1(sentenciaSql);//la ejecuta
            miConsulta.CierraConexion();
        }

        //cambia al tamaño a un componente
        public void cambiaTamanyoComponente(String nombreComponente, String nombreFormulario, String x, String y) 
        {
            String sentenciaSql = "select numero from formulario where nombre = '"+nombreFormulario+"'";
            SqlDataReader datos = miConsulta.HacerConsulta1(sentenciaSql);
            String numeroForm = "";
            if(datos != null && datos.Read())
            {
                numeroForm = datos.GetValue(0).ToString();
            }
            miConsulta.CierraConexion();            
            sentenciaSql = "UPDATE [GIFT].[dbo].[componente_formulario] SET [tamanoX] = "+y+", [tamanoY] = "+x+"WHERE [nombre] = '"+nombreComponente+"'and [numero formulario] = "+numeroForm;
            miConsulta.HacerConsulta1(sentenciaSql);
            miConsulta.CierraConexion();
        }

        //manda a buscar un atributo de una tabla cualquiera, los ultimos dos param hacen de "where atri = cond"
        public String obtieneAtributoEspecificoTabla(String nombreTabla, String nombreAtributo, String atrCondicion, String condicion)
        {
            String resultado = "";
            String consulta = "select [" + nombreAtributo + "] from [" + nombreTabla + "] where " + atrCondicion + " = " + condicion;
            SqlDataReader datos = miConsulta.HacerConsulta1(consulta);
            if (datos != null)
            {
                if (datos.Read())
                {
                    resultado = datos.GetValue(0).ToString();
                }
            }
            miConsulta.CierraConexion();
            return resultado;
        }
        //Manda a actualizar el orden de tabulacion
        public void editar_orden_tabulacion_componente_formulario(String nombre, String nombre_formulario, String orden_tabulacion)
        {
            if (this.verificaExistenciaFormulario(nombre_formulario))
            {
                ArrayList atributosFormulario = this.obtieneAtributosFormulario(nombre_formulario);
                String id_componente = atributosFormulario[0].ToString();
                String campo_nombre = "campo" + nombre;
                String sentenciaSql = "UPDATE [GIFT].[dbo].[componente_formulario] SET [indice tabulacion] = " + orden_tabulacion + " WHERE [numero formulario] = " + id_componente + " AND nombre = '" + campo_nombre + "'";
                SqlDataReader datos = miConsulta.HacerConsulta1(sentenciaSql);
                miConsulta.CierraConexion();
                sentenciaSql = "UPDATE [GIFT].[dbo].[componente_formulario] SET [indice tabulacion] = " + orden_tabulacion + " WHERE [numero formulario] = " + id_componente + " AND nombre = '" + nombre + "'";
                datos = miConsulta.HacerConsulta1(sentenciaSql);
                miConsulta.CierraConexion();


            }
        }
        //retorna los terminos de una lista
        public ArrayList obtieneTerminosLista(String lista)
        {
            ArrayList terminos = new ArrayList();
            String consulta = "select t.nombre from lista l, termino_lista t where l.nombre = '" + lista + "' and l.correlativo = t.[correlativo lista]";
            SqlDataReader datos = miConsulta.HacerConsulta1(consulta);
            if (datos != null)
            {
                while (datos.Read())
                {
                    terminos.Add(datos.GetValue(0).ToString());
                }
            }
            miConsulta.CierraConexion();
            return terminos;
        }

        //Busca nombres de los formularios que contengan la hilera que reciba como parametro en el nombre o la descripcion
        public ArrayList buscarConcordancias(String frase)
        {
            ArrayList campos = new ArrayList();
            String sentenciaSql;
            SqlDataReader datos;
            sentenciaSql = "Select nombre From [GIFT].[dbo].[formulario] Where nombre LIKE '%" + frase + "%' OR descripcion LIKE '%" + frase + "%'";
            datos = miConsulta.HacerConsulta1(sentenciaSql);
            if (datos != null)
            {
                while (datos.Read())
                {
                    campos.Add(datos.GetValue(0).ToString());
                }
            }
            miConsulta.CierraConexion();
            return campos;
        }
        public ArrayList cargaRotulos_para_listarlos(String cualFormulario)
        {
            String numero = "";
            String sentenciaSql = "Select numero From [GIFT].[dbo].[formulario] WHERE nombre = '" + cualFormulario + "'";
            SqlDataReader datos = miConsulta.HacerConsulta1(sentenciaSql);
            if (datos != null)
            {
                if (datos.Read())
                {
                    numero = datos.GetValue(0).ToString();
                }
            }
            miConsulta.CierraConexion();

            ArrayList componentes = new ArrayList();
            String sentenciaSql1 = "Select nombre FROM [GIFT].[dbo].[componente_formulario] WHERE [numero formulario] = " + numero + " and [id tipo campo] IS NULL";
            SqlDataReader datos1 = miConsulta.HacerConsulta1(sentenciaSql1);//la ejecuta
            if (datos1 != null)
            {
                while (datos1.Read())
                {
                    componentes.Add(datos1.GetValue(0).ToString());
                }
            }
            miConsulta.CierraConexion();
            return componentes;
        }
        public ArrayList cargaComponentes_para_listarlos(String cualFormulario)
        {
            String numero = "";
            String sentenciaSql = "Select numero From [GIFT].[dbo].[formulario] WHERE nombre = '" + cualFormulario + "'";
            SqlDataReader datos = miConsulta.HacerConsulta1(sentenciaSql);
            if (datos != null)
            {
                if (datos.Read())
                {
                    numero = datos.GetValue(0).ToString();
                }
            }
            miConsulta.CierraConexion();

            ArrayList componentes = new ArrayList();
            String sentenciaSql1 = "Select nombre, [indice tabulacion] FROM [GIFT].[dbo].[componente_formulario] WHERE [numero formulario] = " + numero + " and [id tipo campo] IS NOT NULL";
            SqlDataReader datos1 = miConsulta.HacerConsulta1(sentenciaSql1);//la ejecuta
            if (datos1 != null)
            {
                while (datos1.Read())
                {
                    componentes.Add(datos1.GetValue(0).ToString());
                    componentes.Add(datos1.GetValue(1).ToString());
                }
            }
            miConsulta.CierraConexion();
            return componentes;
        }
        
        public ArrayList cargaComponentes_para_comandos(String cualFormulario)
        {
            String numero = "";
            String sentenciaSql = "Select numero From [GIFT].[dbo].[formulario] WHERE nombre = '" + cualFormulario + "'";
            SqlDataReader datos = miConsulta.HacerConsulta1(sentenciaSql);
            if (datos != null)
            {
                if (datos.Read())
                {
                    numero = datos.GetValue(0).ToString();
                }
            }
            miConsulta.CierraConexion();

            ArrayList componentes = new ArrayList();
            String sentenciaSql1 = "Select nombre FROM [GIFT].[dbo].[componente_formulario] WHERE [numero formulario] = " + numero + " and [id tipo campo] IS NOT NULL";
            SqlDataReader datos1 = miConsulta.HacerConsulta1(sentenciaSql1);//la ejecuta
            if (datos1 != null)
            {
                while (datos1.Read())
                {
                    componentes.Add(datos1.GetValue(0).ToString());
                    
                }
            }
            miConsulta.CierraConexion();
            return componentes;
        }

    }//Fin clase
}
